package org.example.lethear.dto.user;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import java.time.LocalDate;

/**
 * 用户更新请求DTO
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserUpdateRequest {
    
    /**
     * 邮箱（可选）
     */
    @Email(message = "邮箱格式不正确")
    @Size(max = 100, message = "邮箱长度不能超过100个字符")
    private String email;
    
    /**
     * 昵称（可选）
     */
    @Size(max = 50, message = "昵称长度不能超过50个字符")
    private String nickname;
    
    /**
     * 头像URL（可选）
     */
    @Size(max = 500, message = "头像URL长度不能超过500个字符")
    private String avatar;
    
    /**
     * 个人简介（可选）
     */
    @Size(max = 500, message = "个人简介长度不能超过500个字符")
    private String bio;
    
    /**
     * 真实姓名（可选）
     */
    @Size(max = 50, message = "真实姓名长度不能超过50个字符")
    private String realName;
    
    /**
     * 手机号（可选）
     */
    @Pattern(regexp = "^[1][3-9]\\d{9}$", message = "手机号格式不正确")
    private String phone;
    
    /**
     * 地址（可选）
     */
    @Size(max = 200, message = "地址长度不能超过200个字符")
    private String address;
    
    /**
     * 网站（可选）
     */
    @Size(max = 200, message = "网站URL长度不能超过200个字符")
    private String website;
    
    /**
     * 公司（可选）
     */
    @Size(max = 100, message = "公司名称长度不能超过100个字符")
    private String company;
    
    /**
     * 职位（可选）
     */
    @Size(max = 100, message = "职位长度不能超过100个字符")
    private String position;
    
    /**
     * 生日（可选）
     */
    private LocalDate birthday;
    
    /**
     * 性别（可选）0: 未知, 1: 男, 2: 女
     */
    private Integer gender;
    

    
    /**
     * 学校（可选）
     */
    @Size(max = 100, message = "学校名称长度不能超过100个字符")
    private String school;
    
    /**
     * 个性签名（可选）
     */
    @Size(max = 200, message = "个性签名长度不能超过200个字符")
    private String signature;
    
    /**
     * 背景图片URL（可选）
     */
    @Size(max = 500, message = "背景图片URL长度不能超过500个字符")
    private String backgroundImage;
    
    /**
     * 社交链接（可选）
     */
    @Size(max = 1000, message = "社交链接长度不能超过1000个字符")
    private String socialLinks;
    
    /**
     * 兴趣爱好（可选）
     */
    @Size(max = 500, message = "兴趣爱好长度不能超过500个字符")
    private String interests;
    
    /**
     * 技能（可选）
     */
    @Size(max = 500, message = "技能长度不能超过500个字符")
    private String skills;
    
    /**
     * 是否私人资料（可选）
     */
    private Boolean isPrivate;
    
    /**
     * 是否允许接收消息（可选）
     */
    private Boolean allowMessage;
    
    /**
     * 是否允许被关注（可选）
     */
    private Boolean allowFollow;
} 